iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Security

備考 CISSP 敗部復活 雜草談 系列 第 3

天啊!評鑑跟測試怎麼跟我知道的很不同 ... (下)

  • 分享至 

  • xImage
  •  

前情提要

上篇整理部分安全稽核的重點後,這篇就是整理跟安全測試有關的部分。

安全測試

可以大方向的分為

  • 軟體測試
  • 網路滲透測試
  • 業務連續性(BCM)中提及的各種測試方法及演練計畫

軟體測試

  • 種類大致分為以下幾種
    箱子類型的測試
    • 黑箱測試
      • 測試者對於受測端的資訊一無所知
      • 應用
        • 隨機測試: 透過隨機生成的輸入來測試應用程序,例如: fuzzing test
        • Monkey Test (猴子測試): 猴子測試是一種用戶通過提供隨機輸入並檢查行為或查看應用程序或系統是否崩潰來測試應用程序或系統的技術。

      引用自 Monkey testing

    • 白箱測試
      • 測試者對於受測端的資訊非常清楚
    • 灰箱測試
      • 測試者對於受測端的資訊僅知道但不是很明確,知識點介於黑箱白箱之間
    互動模式的測試型態
    • 主動測試 (Activate)
      • 主動: 與對方有直接接觸跟發生實際交互行為
    • 被動測試 (Passive)
      • 被動: 僅透過資料蒐集的方式得知對方的資訊或情報
客體 主動 被動 應用
網路 主動 Honey Pot (蜜罐/ 蜜網),偵查技術,威脅狩獵 (Threat Hunting),Ping
網路 被動 弱點掃描,嗅誘 (sniffing)、網路竊聽)
流程自動化的測試型態
  • 自動測試
    • 通常是透過腳本語言或編譯預言去依照BDD去製作出專有的半自動或全自動化的測試軟體
  • 手動測試
    • 使用土法煉鋼的純手動方式去執行測式
      • [實務應用] 通常會跟優化測試手法綁在一起

[10萬個WHY] 請問什麼是BDD、TDD、DDD?

  • TDD:測試驅動開發(Test-Driven Development)
    • 直白理解: 先寫測試程式再構築出程式碼的一種開發形式
    • 具體解釋: 主要是編寫測試用例框架對功能的過程和介面進行設計,而測試框架可以持續進行驗證。
  • BDD:行為驅動開發(Behavior Driven Development)
    • 直白理解: 依照流程是什麼行為,就直接構築出可以滿足這個行為的程式
    • 具體解釋: BDD可以看作是對TDD的一種補充,讓開發、測試、業務端以及客戶都能在這個基礎上達成一致的一種戰術作法
  • DDD:領域驅動開發(Domain Drive Design)
    • 直白理解: 簡單的說就是把跟這個專案有關的所有主要成員集合起來一起討論跟共事,可以直接以IPT 團隊來做快速理解
      • IPT團隊: IPT 為集成產品協同組Integrated Product Team
        • 成員組成: 跟這個專案有關係的任何主要成員
    • 具體解釋: 著重於業務的實現,將分析和設計結合起來,不再使他們處於分開運作的狀態,這對於實現不同組織間的完全對齊有非常大的益處

參考資料: TDD、BDD、DDD

程式碼之間的動靜態測試模式
  • 動態測試
    • 程式載入記憶體中所進行的測試行為
    • 壓力測試或功能性測試
  • 靜態測試
    • 程式碼在未執行狀態時被進行的測試行為
    • 程式碼掃描。
軟體測試技術大致分成以下主要幾類
  • Unit Test (單元測試)

    • 原理: 先寫測試程式後再轉寫主程式
    • 誰要寫? 通常是負責撰寫該軟體程式的工程師不是由測試工程師撰寫
  • Code Review: (原始碼複查)

    • Pair Programming 結對編程,屬於最高檔的code review 模式,
    • 怎麼做? 通常是一個人寫,另外一個人在旁邊查看。一段時間後輪替
  • 提交給管理單位審查

    • 提交給主管審查
  • 使用機器人(自動化的軟體服務)做程式碼複查

  • 正式審查複查

    • 提交給特定的專家做程式碼複查
      • [常用] 費根複查 (Fagan Inspection)
[十萬個WHY] 請問什麼是費根複查 (Fagan Inspection)

費根複查是一個結構化的過程,其嘗試在軟體開發的各個階段中發現開發檔案的缺陷

  • 怎麼做?

引用自費根審查 Wiki

  1. 計畫 (Planning)
    • 選擇檢驗小組的成員、準備文件和安排會議地點。
  2. 總攬(Overview)
    • 針對欲檢驗項目替檢驗小組作一般性文件的簡報。
  3. 準備(Preparation)
    • 每一位小組成員獨自研讀欲檢驗項目和支援文件,並且記下任何問題和可能錯誤。
  4. 會議(Meeting)
    • 小組成員一起重新探討欲檢驗項目,以便真正發現錯誤。
  5. 重做(Rework)
    • 由項目作者修正會議中發現且被小組成員認可的錯誤。
  6. 重做檢驗(Re-inspection)
    • 協調者必須負責證實所有會議中發現的錯誤都已經更正。

參考及引用 費根檢查法筆記

  • Integration Testing 整合測試
    • 原理:合併其他人的程式碼後,使用單元測試再全部重新跑一次
  • Regression Testing 回歸測試
    • 簡單的說就是反覆測試,直到異常狀態消失為止
  • Interface Testing 介面測試
    • GUI 測試、API 接口測試
    • [常用] Fuzz Testing (模糊測試)
      • 原理: 使用工具 (Fuzzey) 產生測試資料後透過使用者或是API 接口進行測試
      • 缺點: 容易破壞語意完整性,由於是隨機產生亂序的測試資料 (Pattern)
      • 程式應用: zzuf
  • Misuse Case (誤用案例測試)
    • 原理: 刻意使用與實現者不期望的功能方法的測試行為,允許攻擊者根據其行為 (動作或輸入) 影響功能或達到非預期的結果
    • 應用: SQL injection
  • Performance Testing (性能測試)
    • 原理: 利用一段壓力行為以用來評估效能狀態
  • User Acceptaance Testing (UAT)
    • 出貨前驗收測試
    • 模擬使用者行為做的測試
  • Installation Testing (安裝測試)
    • 依循安裝手冊跟著做一次看看是否會出現任何不正常的狀況
  • Synthetic Transactions (合成交易)
    • [原理] 寫或透過錄製腳本進行監控,這些腳本用以模擬使用者在應用程序中執行的活動,這攏類型的測試或監視通常與開發的應用程序有高度關聯性
    • [情境應用] 使用Selenium 進行腳本錄製後 再產生程單元測試的 腳本,供後續應用
  • Synthetic monitoring (合成監測)
    • 主動式的監視技術
    • [原理] 使用事務的模擬或腳本記錄來完成。創建行為腳本是為了模擬客戶或最終用戶將在網站,應用程序或其他軟件上執行的操作或路徑。然後,以指定的時間間隔連續監視這些路徑的性能

      參考資料 Synthetic monitoring

    • [應用] SNMP Traffic monitoring , 使用SNMP 類別的工具對應用程序進行連續性的監控
  • Test Coverage Analysis (測試覆蓋率分析)
    • [原理] 描述城市中原始碼被測試的比例程度,所得比率成為代碼覆蓋率,重點是代碼覆蓋率的分母是多少
    • [情境] 軟體開發項目中若使用第三方的開源組件,最不關心的就是測試覆蓋率
  • 入侵與攻擊模擬 (Branch and Attack Simulation,BAS)
    • 自動模擬黑客進行多面向攻擊的一種工具,目的在驗證組織的資訊安全防護能力

    • [優點] 以有限的風險提供連續測試,該技術可用於警告 IT 部門和業務利益相關者,有關「安全狀況方面」的現有差距,或驗證安全基礎結構、安全規劃和防禦技術是否按預期執行。

      引用自測試種類分析

[10萬個WHY] 很常聽到SAST、DAST的測試術語縮寫,請問這是什麼呢?

項目 全名 做啥的
SAST 靜態應用程式安全測試 (Static Application Security Testing) 在編碼階段分析應用程式的原始碼或二進位文件的語法、結構、過程、接口等來發現程序代碼存在的安全漏洞。
DAST 動態應用程式安全測試(Dynamic Application Security Testing) 測試或運行階段分析應用程式的動態運行狀態。模擬黑客行為對應用程式進行動態攻擊,分析應用程式的反應,從而確定該應用程式是否易受攻擊。

引用自 DAST、SAST說明文件

網路滲透測試

  • 工具:

    • Metasploit framework ,簡稱MSF。(取一個具代表性的)

    [10萬個WHY]

    請問什麼是MetaSploit Framework 呢?這個軟件工具是要做什麼的?

    Metasploit專案是一個旨在提供安全漏洞資訊電腦安全專案,可以協助安全工程師進行滲透測試及入侵檢測系統簽章開發。 Metasploit專案最為知名的子專案是開源的Metasploit框架,一套針對遠端主機進行開發和執行「Exploit 代碼」的工具。

    引用自MSF - WikiPedia

  • 流程該如何做?

    # 以EC-Council CEH 提出的實現原理說明

    1. Information Gathering (背景資訊蒐集,被動)
    2. Scanning and Reconnaissance (掃描和偵查)
    3. Fingerprinting and Enumeration (指紋集枚舉)
      • 指紋: 收集各式的證據以用來識別出一個實體 ex. 網路主機列表
      • 枚舉: 蒐集系統的共有資源或使用者資訊 ex. 列出系統上目前有開的port number 跟掛載在上面的服務是什麼
    4. Vulnerability Assessment (脆弱性評估)
    5. Exploit Research and Verification (漏洞利用及驗證)
    6. Reporting (報告)

    參考資料

    # 貼布

    • 正式上場考試並不會考MSF 要怎麼使用或nmap 的參數要怎麼下之類的,千萬要記得這是管理考試,不是純技術類別的證照考試

[10萬個WHY] 請問找到漏洞後每次都要手動一一修補,這真的超級麻煩,有沒有什麼服務可以做到自動化修補?

可以使用SCAP (Security Content Aumation Protocol: 自動化修補協議)來達成這個目的,這協議的任務是去做弱點的修補,可以透過這個協議做到自動化的大量佈署。

SCAP 協定是由以下幾個元素組成

  • 通用漏洞披露 (CVE)
  • 通用組態評估 (CCE)
  • 通用平台評估 (CPE)
  • 通用漏洞評分系統 (CVSS)
  • Extensible Configuration Checklist Description Format (XCCDF)
  • 開放漏洞評估語言 (OVAL)

參考資料: SCAP

BCM 業務連續性計畫中的測試演練

  • 流程
    1. 查核表 (Checklist)
      • 檢查每份計畫書都有寫完整及可用
    2. 實際完整閱讀一次 (Read-through)
      • 計劃書仔細看過一次
    3. 走一遍 (Walkthrough)
    4. 情境模擬(Tabletop)
    5. 模擬 (Simulation)
      • 還原現場情況做模擬分析
    6. 平行 (Parallel)
      • 到另一個系統進行中斷測試
      • [例如] Web 主程序跑在 Port 443,那就將服務再次開到其他主機上進行測試演練
    7. 全中斷 (Full interruption)
      • 直接進行真實的實戰演練
小結

整理筆記,只有把重點整理出來。裏頭還是有很多的情境應用需要去做題及實際了解。 但用自己的話寫出來,在這個考試的準備及練習上是非常必要的


上一篇
天啊!評鑑跟測試怎麼跟我知道的很不同 ... (上)
下一篇
關於換位置換腦袋的都市傳說
系列文
備考 CISSP 敗部復活 雜草談 35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言